package com.company.util;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Myutils {

    /**
     * 获取日期类型的方法
     * @param args
     */
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        System.out.println("本周是这一年的第几周："+calendar.get(Calendar.WEEK_OF_YEAR));
        System.out.println("===========================================");

        Date date = new Date();
        System.out.println("当前时间："+date.toString());

        //yyyy-MM-DD HH:mm:ss.S
        //月份的周数，w年份的周数，F月份的星期
        String strDateFormat = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(strDateFormat);
        System.out.println("当前系统的时间："+simpleDateFormat.format(date));//星期默认从0开始

    }

    /**
     * 将Date类型转换成指定格式的日期类型的字符串
     *
     * @param date  被转化的Date类型【2021-01-01】
     * @param strDateFormat 需要转换的日期字符串的格式【yyyy-MM-dd HH:mm:ss】
     * @return 日期变量的指定格式的字符串
     */
    public static String convertDate2String(Date date,String strDateFormat){

        //默认值
        String strDate = "";

        //默认根据业务逻辑确定，此处使用当前时间作为默认值
        if (date == null){
            date = new Date();
        }
        if (strDateFormat == null || strDateFormat.equals("")){
            //指定默认的格式串
            strDateFormat = "yyyy-MM-dd HH:mm:ss";
        }
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(strDateFormat);
        //转换字符串
        strDate = simpleDateFormat.format(date);
        return strDate;
    }


    /**
    * 将会指定格式的日期类型的字符串转换成Date类型
    *
    * @param strDate 日期字符串【2021-01-01】
    * @param strDateFormat 日期字符串的格式【yyyy-MM-dd HH:mm:ss】
    * @return 返回日期类型
     */

    public static Date convertString2Date(String strDate, String strDateFormat)  {
        //默认值根据业务逻辑确定，此处使用当前时间作为默认值；
        Date date = new Date();

        if (strDateFormat == null || strDateFormat.equals(""))
        {
            //指定默认的格式串
            strDateFormat = "yyyy-MM-dd HH:mm:ss";

        }
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(strDateFormat);

        // 将日期类型字符串转换为Date类型

        // 将日期类型字符串转换为Date类型

        try {
            date = simpleDateFormat.parse(strDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        //返回值
        return date;
    }

    /**
     * 泛型的公用方法，代替了new
     */

    /**
     *获取指定Class的实例对象
     * @param <T>
     * @param clazz
     * @return
     */
    public static <T> T getNewIntance(Class<T> clazz){
        //默认返回值
        T t = null;
        try{
            //使用反射创建这个Class的实例对象
            t = clazz.newInstance();

        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        }
        return t;
    }
}
